package com.hwd.gmall.cart.service;

import com.hwd.gmall.model.cart.CartInfo;

import java.util.List;
import java.util.Map;

/**
 * 购物车管理的接口类
 *
 * @author 黄伟东/Victor
 * @date 2022/5/5 23:05
 */
public interface CartInfoService {

    /**
     * 新增购物车
     *
     * @param skuId  商品id
     * @param skuNum 新增商品数量
     */
    void saveCartInfo(Long skuId, Integer skuNum);

    /**
     * 查询当前用户的购物车列表
     *
     * @return java.util.List<com.hwd.gmall.model.cart.CartInfo>
     */
    List<CartInfo> listCartInfo();

    /**
     * 更新用户购物车商品的选中状态
     *
     * @param id     购物车商品id
     * @param status 选中状态，1:选中 0:不选中
     */
    void updateCartInfoStatus(Long id, Short status);

    /**
     * 根据id删除购物车列表的商品
     *
     * @param id 购物车列表的商品id
     */
    void deleteCartInfo(Long id);

    /**
     * 合并购物车
     *
     * @param cartInfos 购物车商品列表
     */
    void mergeCartInfo(List<CartInfo> cartInfos);

    /**
     * 查询当前用户订单确认页的购物车数据
     *
     * @return java.util.Map<java.lang.String, java.lang.Object>
     */
    Map<String, Object> listConfirmedCartInfo();

    /**
     * 新增购物车后，清空购物车
     *
     * @return java.lang.Boolean
     */
    Boolean removeCartInfoAfterAddCartInfo();
}
